/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.*;
import com.ipartek.formacion.gestformwww.modelo.beans.*;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Xarles & Borja
 */
public class VisualizarCalificacionAccion implements Accion {

  
    private final String visualizarcurso = "visualizar-curso-accion";
    private final String listarcursos = "listar-cursos-accion";
     /**
      * Visualiza la calificacion de un alumno en un curso
      * @param servlet
      * @param request
      * @param response
      * @return
      */

    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        HttpSession sesion;
         String path=null;
          AccionServlet as=(AccionServlet) servlet;
        sesion = request.getSession();
        AccionRouter router=new AccionRouter("principal");

        Integer idAlumno = -1;
        Integer idCurso = -1;

        ModeloDiaClase modelo = (ModeloDiaClase) servlet.getServletContext().getAttribute("ModeloDiaClase");
        ArrayList<Calificacion> calificaciones = new ArrayList<Calificacion>();

        if ((Verificador.numeroValido(request.getParameter("idAlumno")) || (request.getAttribute("idAlumno") != null))&&
                (Verificador.numeroValido(request.getParameter("idCurso")) || (request.getAttribute("idCurso") != null))){
                if (request.getAttribute("idAlumno") != null) {
                    idAlumno = (Integer) request.getAttribute("idAlumno");
                } else {
                    idAlumno = Integer.parseInt(request.getParameter("idAlumno"));
                }
                if (request.getAttribute("idCurso") != null) {
                    idCurso = (Integer) request.getAttribute("idCurso");
                } else {
                    idCurso = Integer.parseInt(request.getParameter("idCurso"));
                }
            try {
                calificaciones = modelo.buscarCalificacion(idAlumno, idCurso);
            } catch (GestorFormacionExcepcion ex) {
                Logger.getLogger(VisualizarCalificacionAccion.class.getName()).log(Level.SEVERE, null, ex);
                 sesion.setAttribute("excepciones", ex.getMessage());
            }

                if (calificaciones!=null){
                    request.setAttribute("listacalificaciones", calificaciones);
                    request.setAttribute("contenido-alumno", "calificacion-alumno");
                }
                else{
                    if(request.getParameter("idCurso")!=null){
                    try {
                        request.setAttribute("idCurso",request.getParameter("idCurso"));
                       path= visualizarcurso;
                       router=as.getFactory().getAction(as.getNombreClaseRecurso(path),servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
                    } catch (ClassNotFoundException ex) {
                        Logger.getLogger(VisualizarCalificacionAccion.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (InstantiationException ex) {
                        Logger.getLogger(VisualizarCalificacionAccion.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (IllegalAccessException ex) {
                        Logger.getLogger(VisualizarCalificacionAccion.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    }else{
                    try {
                        path=listarcursos;
                        router=as.getFactory().getAction(as.getNombreClaseRecurso(path),servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
                    } catch (ClassNotFoundException ex) {
                        Logger.getLogger(VisualizarCalificacionAccion.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (InstantiationException ex) {
                        Logger.getLogger(VisualizarCalificacionAccion.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (IllegalAccessException ex) {
                        Logger.getLogger(VisualizarCalificacionAccion.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    }
                 }
        }
        else{
            try {
                path=listarcursos;
                router=as.getFactory().getAction(as.getNombreClaseRecurso(path),servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(VisualizarCalificacionAccion.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(VisualizarCalificacionAccion.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(VisualizarCalificacionAccion.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        

        return router;
    }

    public void inicializa(AccionFactory factory) {

    }

}
